/*
 * Mixer.hpp
 *
 *  Created on: 3 lis 2013
 *      Author: dawid.wysakowicz
 */

#ifndef MIXER_HPP_
#define MIXER_HPP_

#include "common.hpp"

namespace mixer
{
class Mixer
{
public:
	Mixer();

	/**
	 * Generates all possible genotypes collections so that all allels within the given marker are used.
	 * @param allelsSet in fact a set of allels that is of size 2*number of people
	 * @return a list of all possible collections of genotypes created from the given marker
	 */
	std::list<dna::genotypeSet> combineGenotypes(dna::marker& allelsSet);
	virtual ~Mixer();
private:
	bool genGenotypes(const dna::marker& allelsSet, dna::genotypeSet& collection);
};

} /* namespace mixer */

#endif /* MIXER_HPP_ */
